<?PHP

// Pas d'accÞs direct Ó ce fichier, verification de l'existence de la variable definie dans le fichier qui l'appelle
if (!isset($SECURITE)){exit();}

function recup_domaine_id($domaine_user)
/*
Retrouver l'identifiant d'un domaine en fonction de son nom
Entree : Nom du domaine
Sortie : ID du domaine
*/
{                  
  // Recuperons l'id du domaine de l'utilisateur
  $domaine_id=0;
  $liste_domaines=liste_correspondance_domaines();
  foreach ($liste_domaines as $id_domaine)
  {
   $domaine=new correspondance_domaines($id_domaine);
   if ($domaine->nom==$domaine_user)
      {
        $domaine_id=$domaine->id;
        break;
      }
  }
  return $domaine_id; 
}

function cours_theoriques_a_inscrire($user_inscription)
/*
Retourne un tableau contenant tous les IDs de cours moodle dans lesquels theoriquement l'utilisateur connecte doit Ûtre inscrit
Entree : Tableau des donnees de l'utilisateur connecte
Sortie : Tableau des Id's de cours moodle
*/
{

  // Initialisation de la variable de la liste des cours theoriques o¨ il faudra inscrire la personne
  $liste_id_course = ""; 
  $liste_id_course_separateur = "";

  // Recuperons l'ID du domaine de l'utilisateur connecte
  $domaine=$user_inscription['Domaine'];
  $domaine_id=recup_domaine_id($domaine);

  // Allons chercher TOUS les IDs des types de correspondances existants
  $liste_correspondance_types = liste_correspondance_types();
 
  // Pour chaque type de correspondance
  foreach ($liste_correspondance_types as $id_type) {
    
    $correspondance_type = new correspondance_types($id_type);
    
    // Pour ce type de correspondance, si il y a des codes associes Ó l'utilisateur connecte
    if (isset($user_inscription[$correspondance_type->code]) & strlen($user_inscription[$correspondance_type->code])>0) {
      
      // liste des codes pour l'utilisateur connecte et pour ce type separes par un ;
      $liste_codes = $user_inscription[$correspondance_type->code];
      
      // Recuperation des cours moodle pour ce type de correspondance et pour les codes associes Ó l'utilisateur connecte
      $liste_id_course_type = recup_cours_correspondance($domaine_id, $correspondance_type->id , $liste_codes );

      // Ajoutons Ó la liste des cours mooodle theorique les cours moodle de ce type
      if (isset($liste_id_course_type) && strlen($liste_id_course_type)>0) {
        $liste_id_course .= $liste_id_course_separateur.$liste_id_course_type;
        $liste_id_course_separateur = ";";        
      }
      unset($liste_id_course_type); // reinitialisation de la variable pour le type suivant
    } 
  }

  // Mettons cette liste d'id en tableau
  $liste_id_course_array = explode (';',$liste_id_course);

  // On supprime les doublons
  $liste_id_course_array=ValeursUniques($liste_id_course_array);

  return $liste_id_course_array;
}

function recup_cours_correspondance($id_domaine,$id_type,$liste_code)
/*
Recuperation des IDs des cours moodle pour un type de correspondances et ses codes
Entree : Liste des codes separee par un ";" et l'ID du type de correspondance & son domaine
Sortie : Liste des codes cours moodle correspondant Ó la liste des codes. Ils sont separes par un ";"
*/
{
  
  // Liste des cours d une correspondance existe
  $liste_cours_moodle ="";
  
  // Mettons les codes (ETP, ELM, STT, STTEPT...) dans un tableau 
  $codes = explode(';',$liste_code);
  
  $separateur = "";
  
  foreach ($codes as $code) {
      // Pour chaque code la fonction liste_correspondance est lancee avec le code et le type. On ne prend que les correspondances actives dont les dates de debut et de fin definissent un intervale qui inclus la date du jour
	  $maintenant=time();
      $id_correspondances = liste_correspondances($id_domaine,$id_type,$code,0,1,'',"<='".$maintenant."'",">'".$maintenant."'");

      foreach ($id_correspondances as $id_correspondance)  {
        $correspondance_moodle = new correspondances($id_correspondance);
        $liste_cours_moodle .= $separateur.$correspondance_moodle->id_course;
        $separateur = ";";
      }   
  }
  
  return $liste_cours_moodle;

}

function ValeursUniques($tableau) 
/*
Permet de supprimer des doublons d'un tableau
Entree : Tableau de valeurs
Sortie : Tableau de valeurs DISTINCTES
*/
{

  // On recupÞre les mÛmes valeurs dans 1 seule case
  for ($i = 0, $n = count($tableau); $i < $n; $i++)
    $uTableau[$tableau[$i]] = 1;

  // On cree le nouveau tableau
  reset($uTableau);
  for ($i = 0, $n = count($uTableau); $i < $n; $i++) {
    $tUnique[] = key($uTableau);
    next($uTableau);
  }
  return $tUnique;
}



function exergue($chaine, $mots, $type) 
/*
Baptiste Judic
17/02/09

Fonction permettant de mettre en evidence une partie d'une phrase
$chaine : chaine de caractÞres à traiter
$mots : tableau de mots a mettre en exergue dans la chaine
$type : type de mise en forme pour cette mise en exergue (classe d'un span <span class="$type">)
La mise en forme devra etre etablie dans la feuille de styles
*/
{
  
  foreach ($mots as $mot) {
    if (eregi($mot, $chaine)) {
      $exergue_debut = stripos($chaine, $mot);
      $exergue_fin = stripos($chaine, $mot)+strlen($mot);
      $chaine = substr_replace($chaine, '</span>', $exergue_fin, 0);
      $chaine = substr_replace($chaine, '<span class="'.$type.'">', $exergue_debut, 0);
    }
  }
  
  return $chaine;

}


/*
Baptiste Judic 
28/04/09

Fonction permettant l'affichage dans une liste des infos utiles d'un cours.
- Son ID
- Le(s) enseignant(s)
- Les correspondances de ce cours
*/
function affiche_cours_infos($id_course) {    
   return $affiche_cours_infos; 
}


//Permet de surligner dans une recherche entouré de % (pour le like),  l'element de la recherche dans un mot
function surligner($cherche, $source) {
   $rest = substr($cherche, 1, -1);  //enlever les % pour la recherche
   $texte= str_ireplace($rest,"<span class=\"underline\">$rest</span>",$source);
   return $texte;
}
function tri_alphabetique_nom($a, $b){
  //On verifie si les noms sont identiques puis le prénom si besoin
      $nom1= strtolower($a->nom);
      $nom2= strtolower($b->nom);
      if ($nom1 == $nom2) {
          $prenom1= strtolower($a->prenom);
          $prenom2= strtolower($b->prenom);

        if ($prenom1 > $prenom2) {
          return  1 ;
        }else{
           return  -1 ;
        }
        return 0;
      }else{
            if ($nom1 > $nom2) {
                return  1 ;
            }else{
               return  -1 ;
            }
      }
}


function etape($id)
// Récupère l'objet étape de la base AUA à partir de son code
{
	global $CONF_bdd_prefixe;
	$sql="SELECT * FROM ".$CONF_bdd_prefixe."aua_etape WHERE `NO_ETAPE`='".$id."'";
	$query=mysql_query($sql);
	if (mysql_num_rows($query)==0)
	{
		$etape->L_ETAPE="Etape introuvable";
		return $etape;
	}
	else
	{
		return mysql_fetch_object($query);
	}
}

function element($id)
// Récupère l'objet élément de la base AUA à partir de son code
{
	global $CONF_bdd_prefixe;
	$sql="SELECT * FROM ".$CONF_bdd_prefixe."aua_element WHERE `NO_ELEMENT`='".$id."'";
	$query=mysql_query($sql);
	if (mysql_num_rows($query)==0)
	{
		$element->L_ELEMENT="El&eacute;ment introuvable";
		return $element;
	}
	else
	{
		return mysql_fetch_object($query);
	}
}



function verif_responsable($user,$course)
// Vérifie si l'utilisateur est responsable dans le cours
// Sortie : vrai ou faux
{
	global $CONF_bdd_prefixe;
	$sql="SELECT * FROM ".$CONF_bdd_prefixe."responsables_espaces WHERE `id_course`=$course AND `id_user`=$user";
	$query=mysql_query($sql);
	if (mysql_num_rows($query)==0)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function verif_responsable_au_moins_un($user)
// Vérifie si l'utilisateur est responsable dans au moins UN de ses cours
// Sortie : vrai ou faux
{
	global $CONF_bdd_prefixe;
	$sql="SELECT * FROM ".$CONF_bdd_prefixe."responsables_espaces WHERE `id_user`=$user";
	$query=mysql_query($sql);
	if (mysql_num_rows($query)==0)
	{
		return false;
	}
	else
	{
		return true;
	}
}
function nb_responsable($id_course)
// Sortie : nb de responsable d'un espace
{
	global $CONF_bdd_prefixe;
	$sql="SELECT * FROM ".$CONF_bdd_prefixe."responsables_espaces WHERE `id_course`=".$id_course;
	$query=mysql_query($sql);
  return mysql_num_rows($query);

}

function verif_validite_category($id)
// Vérifie si la catégorie pour id $id ne fait pas partie des catégories à exclure pour le changement d'année (caégories de test, cours de démonstration ....)
// Sortie Vrai ou Faux
{
	GLOBAL $CONF_category_non_valide;
	$findme=";".$id.";";
	$pos = strpos($CONF_category_non_valide, $findme);
	if ($pos === false) {
		return true;
	}
	return false;
}

function verif_validite_course($id)
// Vérifie si le cours pour id $id ne fait pas partie des cours à exclure pour le changement d'année (cours pour id=1 (site) cours géré différemment...)
// Sortie Vrai ou Faux
{
	GLOBAL $CONF_course_non_valide;
	$findme=";".$id.";";
	$pos = strpos($CONF_course_non_valide, $findme);
	if ($pos === false) {
		return true;
	}
	return false;
}   



//Permet de vérifier si le login est numérique ou non, afin de savoir si le compte Moodle est validé ou non
function verif_login_validation ($chaine)
{
  ereg("[0-9]",$chaine,$arrayreponse);
  if (count($arrayreponse)==0)
  {
    return false;
  }
  else
  {
    return true;
  }
}

function envoi_demande_reinitialisation($login, $auto=false)
// Permet de faire l'envoi du mail du stic aux enseignants pour la demande de reinitialsation
{
    global $USER, $CFG, $CONF_serveur_prod, $CONF_repertoire, $CONF_login_admin;
    
    // Envoyer à stic@listes si serveur de test :
    if ($CFG->wwwroot!=$CONF_serveur_prod)
    {
     $id = moodle_get_complete_user_data("admin");
    }
    else
    {
     $id = moodle_get_complete_user_data($login);
    }
    
    $from = moodle_get_complete_user_data($CONF_login_admin);
    $subject = "IMPORTANT : Cloture de l'année ".($CONF_annee_en_cours)."/".($CONF_annee_en_cours+1)." sur Moodle";
    $messagetext = "Si vous ne parvenez pas a lire le message, connectez-vous ici : ".$CFG->wwwroot."/".$CONF_repertoire."changement_annee.php     
\n\n\n\nMadame, Monsieur,
\nVous utilisez la plateforme Moodle dans le cadre de votre activité à l'université, nous vous remercions de votre confiance. 
\nUne nouvelle année universitaire débute. Le ".$CONF_nom_service." a besoin de vous pour mettre à jour vos espaces ".($CONF_annee_en_cours)."/".($CONF_annee_en_cours+1)." et permettre aux nouveaux étudiants d'accéder à vos ressources.\n
\nPour cela nous avons mis en place une page internet qui vous permettra de réaliser cette manipulation. 

\nPOURQUOI CETTE MANIPULATION ?
\nLa validation d'un espace permet de désinscrire les étudiants ".($CONF_annee_en_cours)."/".($CONF_annee_en_cours+1)." pour laisser la place à ceux de ".($CONF_annee_en_cours+1)."/".($CONF_annee_en_cours+2)." : Suppression des messages dans les forums, des devoirs déposés et historiques de connexion. (Sauvegarder les devoirs déposés si vous souhaitez les concerver)

\nQUE DOIS-JE FAIRE ?
\nAccédez à l'espace de documentation sur Moodle ou cliquez directement sur le lien suivant : ".$CFG->wwwroot."/".$CONF_repertoire."
\nVous devez traiter chacun de vos espaces en cliquant sur \"valider l'espace pour ".($CONF_annee_en_cours)."/".($CONF_annee_en_cours+1)."\".
\n";
if ($auto)
{
 $messagetext .= "\nQUAND EST-CE QUE LES NOUVEAUX ETUDIANTS ACCEDERONT A MON ESPACE ?
 \nIls y accèderont à la date que vous aurez indiquée avant la validation.
 \n";
}
$messagetext .= "AI-JE FAIT TOUT LE NECESSAIRE ?
\nOui, lorsque la mention : - Espace prêt - sera présente pour tous vos espaces.
\nEn vous remerciant de votre participation, nous restons à votre disposition pour toute information complémentaire.
\n
\nLe $CONF_nom_service
\n$CONF_mail_contact
\n$CONF_tel_contact
\n
Questions/réponses :
\nQ : Est-ce que certains de mes documents vont disparaître ?
\nR : NON, aucun de vos documents n'est supprimé. De plus la structure de votre espace et vos activités restent inchangées.
\n\nQ : Si je ne fais pas cette manipulation que se passe t-il ?
\nR : Les étudiants de l'année dernière auront toujours accès. Les nouveaux ne pourront pas consulter vos ressources. Sans nouvelles de votre part, le ".$CONF_nom_service." sera contraint de le faire à votre place.
\n\nQ : Peut-on conserver les redoublants ?
\nR : Non, mais les redoublants auront bien accès à votre espace car ils seront considérés comme nouveaux.
\n\nQ : Je pensais retravailler sur mon espace prochainement, puis-je attendre pour faire cette manipulation ?";
if ($auto)
{
$messagetext .="\nR : Non, au contraire faites la validation qui vous assurera que les étudiants n'accèderont plus à votre espace sans oublier de modifier la date à laquelle les nouveaux commenceront à y accéder.";
}
else
{
$messagetext .="\nR : Non, au contraire faites la validation qui vous assurera que les étudiants n'accèderont plus à votre espace. Vous leur ferez parvenir le numéro de l'espace avec sa clé quand votre espace sera prêt.";
}

    //Retourne "true" si le mail est bien envoyé, "emailstop" si l'email a été bloqué par l'utilisateur et "false" pour toute les autres types d'erreur
    $envoi = email_to_user($id, $from->email, $subject, $messagetext, $messagehtml='', $attachment='', $attachname='', $usetrueaddress=true, $replyto=$from->email, $replytoname=$from->username, $wordwrapwidth=79);
       
    //////////////
    // Tracking //
    //////////////
    // Nouveau tracking  
    $tracking = new changement_annee_tracking(0);   
    $id_changement_annee_tracking = $tracking->id; 
    $tracking->date = time();
    $tracking->user = $USER->username;
    $tracking->objet = "Demande_Reinitialisation";
    if($envoi==1){
      echo "Le message &agrave; bien &eacute;t&eacute; envoy&eacute;\n\n";
      $tracking->action="Mail envoyé";
    }else if($envoi=="emailstop"){
              echo "Une erreur est parvenue pendant l'envoi (Bloqu&eacute;), veuillez recommencer s'il vous plait";
              $tracking->action="Bloqué";
          }else{
          echo "Une erreur est parvenue pendant l'envoi(Autre Erreur), veuillez recommencer s'il vous plait";
          $tracking->action="Erreur";
        }
    $tracking->id_objet = $id->id;
    $tracking->commentaire = addslashes($id->firstname)." ".addslashes($id->lastname)." a reçu du ".$CONF_nom_service." :\n".addslashes($messagetext);
    $tracking->update($id_changement_annee_tracking);
//print_r($tracking);

    return $tracking->action;
}



function responsable_cours($num){
//Retourne le responsable d'un cours précis
  global $CONF_bdd_prefixe, $CONF_moodle_bdd_prefixe;
  $req="select firstname, lastname from ".$CONF_bdd_prefixe."responsables_espaces, ".$CONF_moodle_bdd_prefixe."user where id_course=".$num." AND ".$CONF_bdd_prefixe."responsables_espaces.id_user=".$CONF_moodle_bdd_prefixe."user.id";
  $query=mysql_query($req);
  while ($resp=mysql_fetch_array($query)) 
  {
    $prenom_resp= $resp['firstname'];
    $nom_resp= $resp['lastname'];   
  }     
  if(!isset($prenom_resp) AND !isset($prenom_resp)){
     $nom_complet="<strong>Pas de responsable</strong>";
  }else{
     $nom_complet=$prenom_resp." ".$nom_resp;
  }
  return $nom_complet;
}

//Permet d'avoir la premiere et derniere categories d'un cours
function chemin_cours_court($num){
global $CONF_moodle_bdd_prefixe;
    $req="select path from ".$CONF_moodle_bdd_prefixe."course_categories,".$CONF_moodle_bdd_prefixe."course where ".$CONF_moodle_bdd_prefixe."course.id=".$num." AND ".$CONF_moodle_bdd_prefixe."course_categories.id=".$CONF_moodle_bdd_prefixe."course.category";
     $query=mysql_query($req);
      while ($cat=mysql_fetch_array($query)) 
      {
        $categories= $cat['path'];
        //On divise chaque categorie
        $tab_cat = explode('/',$categories);
        //print_r($tab_cat);
        //premiere categorie
        $req_prem_cat="select name from ".$CONF_moodle_bdd_prefixe."course_categories where id='".$tab_cat[1]."'";
        
        $query_prem_cat=mysql_query($req_prem_cat);
        while ($prem_cat=mysql_fetch_array($query_prem_cat)) 
        {
           $premiere_cat=$prem_cat['name'];
        }
        //derniere categorie
        $req_dern_cat="select name from ".$CONF_moodle_bdd_prefixe."course_categories where id='".$tab_cat[count($tab_cat)-1]."'";   
        $query_dern_cat=mysql_query($req_dern_cat);
        while ($dern_cat=mysql_fetch_array($query_dern_cat)) 
        {
           $derniere_cat=$dern_cat['name'];
        }        
      }
        if ($premiere_cat==$derniere_cat){
          $chemin=$premiere_cat;
        }else{
          $chemin=$premiere_cat."/".$derniere_cat;
        }
  return $chemin;
}
//Permet d'avoir la premiere categorie d'un cours
function chemin_cours_categorie($num){
global $CONF_moodle_bdd_prefixe;
    //$premiere_cat="";
    $req="select path from ".$CONF_moodle_bdd_prefixe."course_categories,".$CONF_moodle_bdd_prefixe."course where ".$CONF_moodle_bdd_prefixe."course.id=".$num." AND ".$CONF_moodle_bdd_prefixe."course_categories.id=".$CONF_moodle_bdd_prefixe."course.category";
     //echo $req."<br/>";
     $query=mysql_query($req);
      while ($cat=mysql_fetch_array($query)) 
      {
        $categories= $cat['path'];
        //On divise chaque categorie
        $tab_cat = explode('/',$categories);
        
        //premiere categorie
        $req_prem_cat="select name from ".$CONF_moodle_bdd_prefixe."course_categories where id='".$tab_cat[1]."'";
        
        $query_prem_cat=mysql_query($req_prem_cat);
        while ($prem_cat=mysql_fetch_array($query_prem_cat)) 
        {
           $premiere_cat=$prem_cat['name'];
        }
       
      }  
      
  return $premiere_cat;
}
//Permet d'avoir le chemin complet des categories d'un cours
function chemin_cours_complet($num){
global $CONF_moodle_bdd_prefixe;
     $chemin="";
     $req="select path from ".$CONF_moodle_bdd_prefixe."course_categories,".$CONF_moodle_bdd_prefixe."course where ".$CONF_moodle_bdd_prefixe."course.id=".$num." AND ".$CONF_moodle_bdd_prefixe."course_categories.id=".$CONF_moodle_bdd_prefixe."course.category";
     $query=mysql_query($req);
      while ($cat=mysql_fetch_array($query)) 
      {
        $categories= $cat['path'];
        //On divise chaque categorie
        $tab_cat = explode('/',$categories);
        
        for($i=1; $i < count($tab_cat); $i++){ 
          $req_cat="select name from ".$CONF_moodle_bdd_prefixe."course_categories where id='".$tab_cat[$i]."'";
          $query_cat=mysql_query($req_cat);
          while ($categorie=mysql_fetch_array($query_cat)) 
          {
             $chemin.=$categorie['name']."/";
          }
        }
      }
  return $chemin;
}

function recherche_anomalie($course){
  global $CONF_bdd_prefixe;
//Permet d'avoir une liste des anomalies sur un cours
  $anomalies="";
  $anomalies_enseignant="";
  $anomalies_resp="";
  $anomalies_corresp="";
  $anomalies_cle="";
  $anomalies_cache="";
  $anomalies_inexistant="";
  $anomalies_etape="";
  $anomalies_element="";

  
  if ($course->id!=1){//si c'est pas l espace de documentation
	
   $enseignants=moodle_get_enseignants($course->id);
   $resp=false;
   
   // Y'a-til au moins un enseignant ?
   if ($enseignants) 
   {
       foreach ($enseignants as $enseignant)
       {
        if (verif_responsable($enseignant->id,$course->id))
        {
         $resp=true;
        }
       }
   }
   else // Pas d'enseignant
   {
    $anomalies_enseignant="<img src='includes/images/anomalie_enseignant.gif' alt='Sans Enseignant' title='Sans Enseignant' class='ico-ano' />";
   }

     if (!verif_validite_category($course->category))
     {
      $resp=true;
     }
     if (!verif_validite_course($course->id))
     {
      $resp=true;
     }   
   
   // Cours sans responsable ?
   if (!$resp)
   {
    $anomalies_resp="<img src='includes/images/anomalie_resp.gif' alt='Sans Responsable' title='Sans Responsable' class='ico-ano' />";
   }
   if (!get_record('course','id', $course->id))
   {
    $anomalies_inexistant="<img src='includes/images/anomalie_inexistant.gif' alt='Cours inexistant' title='Cours inexistant' class='ico-ano' />";
   }
   // Cours cach&eacute; ?
   if ($course->visible==0)
   {
    $anomalies_cache="<img src='includes/images/anomalie_cache.gif' alt='Cours cach&eacute' title='Cours cach&eacute' class='ico-ano ico-ano-cle' />";
   }
   
   // Cl&eacute; valide ?
    if (strlen($course->password)<3)
    {
    $anomalies_cle="<img src='includes/images/anomalie_cle.gif' alt='Cl&eacute; inexistante ou < 4 caract&egrave;res' title='Cl&eacute; inexistante ou < 4 caract&egrave;res' class='ico-ano' />";
     
    }  
    
    //On verifie la presence et la validité des correspondances
    $sql="select * FROM ".$CONF_bdd_prefixe."correspondances WHERE id_course='".$course->id."'";
    $query=mysql_query($sql);
    if(mysql_num_rows($query)==0){
           $anomalies_corresp="<img src='includes/images/anomalie_corresp.gif' alt='Pas de Correspondance' title='Pas de Correspondance' class='ico-ano' />";
      }
    while ($liste_correspondances=mysql_fetch_array($query)) 
    {
          //On verifie la validité de l'etape
        	if ($liste_correspondances['id_type']==3){
      			$ln=strlen($liste_correspondances['code'])-4;
      			$code_etape=substr($liste_correspondances['code'],4,$ln);
      			if (etape($code_etape)->L_ETAPE=="Etape introuvable"){
      				    $anomalies_etape="<img src='includes/images/anomalie_etape.gif' alt='Etape invalide' title='Etape invalide' class='ico-ano' />";
      			}
      		}
      		//On verifie la validité de l'element
        	if ($liste_correspondances['id_type']==2){
      			$ln=strlen($liste_correspondances['code'])-4;
      			$code_element=substr($liste_correspondances['code'],4,$ln);
      			if (element($code_element)->L_ELEMENT=="El&eacute;ment introuvable"){
      				$anomalies_element="<img src='includes/images/anomalie_element.gif' alt='Element invalide' title='Element invalide' class='ico-ano' />";
      			}
      		}      
      }
        
    
      $chemin=chemin_cours_court($course->id);
          
  //On test si ya une anomalie, et si oui, on affiche les erreurs
    if ($anomalies_enseignant!="" OR  $anomalies_resp!="" OR $anomalies_corresp!="" OR $anomalies_cle!="" OR $anomalies_cache!="" OR  $anomalies_inexistant!="" OR $anomalies_etape!="" OR $anomalies_element!=""){
      $anomalies=$anomalies_enseignant.$anomalies_resp.$anomalies_corresp.$anomalies_cle.$anomalies_cache.$anomalies_inexistant.$anomalies_etape.$anomalies_element." <a href='index.php?page=cours/cours_fiche&amp;id=".$course->id."'>".$course->fullname."</a> (<a href='../course/view.php?id=".$course->id."' target='_blank'>".$course->id."</a> - <a href='../course/edit.php?id=".$course->id."' target='_blank'><img src='includes/images/tools.png' alt='Parametres' title='Parametres' /></a>) - ".$chemin; 
      return $anomalies;
    }else{
      return 0;
    }
    
  }
}

function recherche_espace_ouvert_cat($id_cat,$date_deb,$date_fin){
global $CONF_moodle_bdd_prefixe;    
    //On cherche les courses qui sont dans la categorie en cours et créées entre  la date de debut et la date de fin
    $sql1= 'SELECT * FROM ".$CONF_moodle_bdd_prefixe."course WHERE category='.$id_cat.' AND timecreated BETWEEN '.$date_deb.' AND '.$date_fin;
    $cours_racine_cat = mysql_query($sql1);
    //$cours_racine_cat1=mysql_fetch_object($cours_racine_cat);

     if(mysql_num_rows($cours_racine_cat)!=0){
      //On récupere des infos sur la categorie
      $sql2="SELECT * FROM ".$CONF_moodle_bdd_prefixe."course_categories WHERE id=".$id_cat." and coursecount!=0";
      $info_cat=mysql_query($sql2);
      $infos_cat=mysql_fetch_object($info_cat);
      $categories = explode("/", $infos_cat->path); 
      echo "<tr><td>";
      //print_r($categories);
      foreach($categories as $chemin){
        if($chemin!=""){
           $sql_nom="SELECT name FROM ".$CONF_moodle_bdd_prefixe."course_categories WHERE id=".$chemin;
           $query_nom=mysql_query($sql_nom);
           $catnom=mysql_fetch_object($query_nom);
           echo $catnom->name." / ";
         }
      }          
      echo "</td>";
      //On affiche le nom de la categorie et le nombre de cours correspondant a la recherche
      echo "<td>".mysql_num_rows($cours_racine_cat)."</td></tr>";
      //print_r($cours_racine_cat1);
    }
    
    //On cherche les courses qui sont dans la categorie et qui ont pour parent la categorie actuelle et qui ne sont pas vide
    $sql3 = "SELECT * FROM ".$CONF_moodle_bdd_prefixe."course_categories WHERE parent =".$id_cat." ORDER BY name"; 
    $ss_cats = mysql_query($sql3);
                                  
    //S'il y a des resultats
    if(mysql_num_rows($ss_cats)!=0){
      //Pour chaque résultat 
      while($ss_cat=mysql_fetch_object($ss_cats))
       {
         // echo "<br />".$ss_cat->path."<br /><br />";
          //On relance la fonction pour avoir les categories filles
          recherche_espace_ouvert_cat($ss_cat->id,$date_deb,$date_fin);
       }

    }

}

function recherche_nb_espace_ouvert_cat_racine($id_cat,$date_deb,$date_fin,$nb_retour_cat){
//variable global pour calculer le nombre de cours dans une categorie mère
global $nb_retour_cat, $CONF_moodle_bdd_prefixe;    
                                                     
    //On cherche les courses qui sont dans la categorie et créées entre  la date de debut et la date de fin
    $sql1= "SELECT * FROM ".$CONF_moodle_bdd_prefixe."course WHERE category=".$id_cat." AND timecreated BETWEEN ".$date_deb." AND ".$date_fin;
    $cours_racine_cat = mysql_query($sql1);
                
    //On compte le nombre de courses qui sont dans cette categorie
    $nb_cours_cat=mysql_num_rows($cours_racine_cat);
    $nb_retour_cat+=$nb_cours_cat; 
                
    //On cherche les categories qui sont dans la categorie mere et qui ne sont pas vide
    $sql2 = "SELECT * FROM ".$CONF_moodle_bdd_prefixe."course_categories WHERE parent=".$id_cat."  ORDER BY sortorder"; 
    $ss_cats = mysql_query($sql2);
    $nb_sscats=mysql_num_rows($ss_cats);        
    //On compte le nombre de categorie fille qu'il y a
    if($nb_sscats!=0){
      //S'il y a des categories filles, pour chaqu'une on va récuperer leurs filles
      while($ss_cat=mysql_fetch_object($ss_cats))
       {
         /* DEBUG 
          echo "1:".$sql1."<br />passage : ".$i."<br />";
          echo "2:".$nb_test."( + ".$nb_cours_cat."  ici)<br />";
          echo "3:".$sql2."<br /><br />";             
          echo "4:".$ss_cat->path."&nbsp;&nbsp;&nbsp;nb : ".$nb_test."<hr />";   */
          //On recherche les filles de la categorie fille auquel on ajoute le compteur
          $nb_retour_cat=recherche_nb_espace_ouvert_cat_racine($ss_cat->id,$date_deb,$date_fin, $nb_retour_cat);                    
       }
    }                  
  //S'il n'y a pas de categorie fille, on a atteint le bout de la branche des sous categories de la categorie principale
  return $nb_retour_cat; 

}


function recherche_nb_visite_unt($une_unt,$date_deb_unt,$date_fin_unt){
	global $CONF_bdd_prefixe;
    //On cherche les courses qui sont dans la categorie et créées entre  la date de debut et la date de fin
    $sql1= "SELECT * FROM `".$CONF_bdd_prefixe."stats_unt` WHERE lien='".$une_unt."' AND date BETWEEN ".$date_deb_unt." AND ".$date_fin_unt;
    $unt_liste = mysql_query($sql1);
    //On compte le nombre de visite qui y a eu durant cette date et pour ce lien
    $nb_unt_section=mysql_num_rows($unt_liste); 
    return $nb_unt_section; 
}



?>